﻿using System;
using System.Collections.Generic;
using System.Windows.Input;

namespace Reuse.PCL.Services {
	public interface INavigationService {
		/// <summary>
		/// Routing Table for Windows Store apps
		/// </summary>
		Dictionary<string, Type> WSRoutingTable { get; set; }
		/// <summary>
		/// Routing Table for Windows Phone apps
		/// </summary>
		Dictionary<string, Uri> WPRoutingTable { get; set; }

		void Navigate( Type sourcePageType );
		void Navigate( Type sourcePageType, object parameter );
		/// <summary>
		/// Windows Store and Windows Phone Navigate using a key for the RoutingTable if defined
		/// </summary>
		/// <param name="route">Key in the routing table</param>
		bool Navigate( string route );
		bool Navigate( string route, string parameter );

		void GoBack();
        void GoForward();

		bool CanGoBack { get; }
		/// <summary>
		/// WP Specific Navigate
		/// </summary>
		/// <param name="source"></param>
		/// <returns></returns>
		bool Navigate( Uri source );


		bool RecoveredFromTombstoning { get; set; }
		void UpdateTombstonedPageTracking( Uri pageUri );
		bool DoesPageNeedtoRecoverFromTombstoning( Uri pageUri );

	}
}
 